
#ifndef ICOMPARER_H
#define ICOMPARER_H

// C# includes.
#include <Typedef.h>
#include <Defines.h>
#include <CSharpPropertyMethods.h>

// Riccsson includes.
#include <System/Object.h>

namespace Riccsson
{
	namespace System
	{
		namespace Collections
		{
			// Summary:
			//     Exposes a method that compares two objects.
			interface IComparer
			{
				// Summary:
				//     Compares two objects and returns a value indicating whether one is less than,
				//     equal to, or greater than the other.
				//
				// Parameters:
				//   x:
				//     The first object to compare.
				//
				//   y:
				//     The second object to compare.
				//
				// Returns:
				//     A signed integer that indicates the relative values of x and y, as shown
				//     in the following table.Value Meaning Less than zero x is less than y. Zero
				//     x equals y. Greater than zero x is greater than y.
				//
				// Exceptions:
				//   System.ArgumentException:
				//     Neither x nor y implements the System.IComparable interface.-or- x and y
				//     are of different types and neither one can handle comparisons with the other.
				virtual int Compare(Riccsson::System::object* x, Riccsson::System::object* y) = 0;
			};
		}
	}
}

#endif // IENUMERATOR_H